package com.ruoyi.employee.domain;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

/**
 * 员工信息对象 fxy_financial_employee
 * 
 * @author Mr.阚
 * @date 2025-02-25
 */
public class Employee extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /** 用户编码 */
    @Excel(name = "用户编码")
    @NotBlank(message = "用户编码不能为空")
    private String usercode;

    /** 名称 */
    @Excel(name = "名称")
    @NotBlank(message = "名称不能为空")
    private String username;

    /** 性别 */
    @Excel(name = "性别")
    @NotBlank(message = "性别不能为空")
    private String usersex;

    /** 部门id */
    @Excel(name = "部门id")
@NotNull(message = "部门id不能为空")
    private Long userdep;

    /** 
职务 */
    @Excel(name = " 职务")
    @NotBlank(message = "职务不能为空")
    private String userrole;

    /** 手机 */
    @Excel(name = "手机")
    @NotBlank(message = "手机不能为空")
    @Pattern(regexp = "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$",message = "请输入正确的手机号码")
    private String usermobile;

    /** 
身份证号 */
    @Excel(name = " 身份证号")
    @NotBlank(message = "身份证号不能为空")
    @Pattern(regexp = "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)",message = "请输入正确的身份证号")
    private String useridCard;

    /** 
邮箱 */
    @Excel(name = " 邮箱")
    @NotBlank(message = "邮箱不能为空")
    private String useremail;

    /** 出生日期 */
    @Excel(name = "出生日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8",shape = JsonFormat.Shape.STRING)
    private String birthday;

    /** 入职日期 */
    @Excel(name = "入职日期")
    @NotBlank(message = "入职日期不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8",shape = JsonFormat.Shape.STRING)
    private String entertime;

    /** 离职日期 */
    @Excel(name = "离职日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8",shape = JsonFormat.Shape.STRING)
    private String leavetime;

    /** 银行名称 */
    @Excel(name = "银行名称")
    private String bankname;

    /** 
银行账号 */
    @Excel(name = " 银行账号")
    private String bankaccount;

    /** 学历 */
    @Excel(name = "学历")
    private String degree;

    /** 在职状态 */
    @Excel(name = "在职状态")
    @NotBlank(message = "在职状态不能为空")
    private String userstate;

    /** 计提科目 */
    @Excel(name = "计提科目")
    @NotBlank(message ="计提科目不能为空")
    private String accrualsubject;

    /** 所属账套 */
    private Long accountSetsId;

    /** 备注 */
    @Excel(name = "备注")
    private String note;

    /** 是否缴纳五险一金 */
    @NotBlank(message ="是否缴纳五险一金不能为空")
    private String whether;

    /** 五险一金信息 */
    private List<Socialsecurity> socialsecurityList;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setUsercode(String usercode) 
    {
        this.usercode = usercode;
    }

    public String getUsercode() 
    {
        return usercode;
    }
    public void setUsername(String username) 
    {
        this.username = username;
    }

    public String getUsername() 
    {
        return username;
    }
    public void setUsersex(String usersex) 
    {
        this.usersex = usersex;
    }

    public String getUsersex() 
    {
        return usersex;
    }
    public void setUserdep(Long userdep) 
    {
        this.userdep = userdep;
    }

    public Long getUserdep() 
    {
        return userdep;
    }
    public void setUserrole(String userrole) 
    {
        this.userrole = userrole;
    }

    public String getUserrole() 
    {
        return userrole;
    }
    public void setUsermobile(String usermobile) 
    {
        this.usermobile = usermobile;
    }

    public String getUsermobile() 
    {
        return usermobile;
    }
    public void setUseridCard(String useridCard) 
    {
        this.useridCard = useridCard;
    }

    public String getUseridCard() 
    {
        return useridCard;
    }
    public void setUseremail(String useremail) 
    {
        this.useremail = useremail;
    }

    public String getUseremail() 
    {
        return useremail;
    }
    public void setBirthday(String birthday) 
    {
        this.birthday = birthday;
    }

    public String getBirthday() 
    {
        return birthday;
    }
    public void setEntertime(String entertime) 
    {
        this.entertime = entertime;
    }

    public String getEntertime() 
    {
        return entertime;
    }
    public void setLeavetime(String leavetime) 
    {
        this.leavetime = leavetime;
    }

    public String getLeavetime() 
    {
        return leavetime;
    }
    public void setBankname(String bankname) 
    {
        this.bankname = bankname;
    }

    public String getBankname() 
    {
        return bankname;
    }
    public void setBankaccount(String bankaccount) 
    {
        this.bankaccount = bankaccount;
    }

    public String getBankaccount() 
    {
        return bankaccount;
    }
    public void setDegree(String degree) 
    {
        this.degree = degree;
    }

    public String getDegree() 
    {
        return degree;
    }
    public void setUserstate(String userstate) 
    {
        this.userstate = userstate;
    }

    public String getUserstate() 
    {
        return userstate;
    }
    public void setAccrualsubject(String accrualsubject) 
    {
        this.accrualsubject = accrualsubject;
    }

    public String getAccrualsubject() 
    {
        return accrualsubject;
    }
    public void setAccountSetsId(Long accountSetsId) 
    {
        this.accountSetsId = accountSetsId;
    }

    public Long getAccountSetsId() 
    {
        return accountSetsId;
    }
    public void setNote(String note) 
    {
        this.note = note;
    }

    public String getNote() 
    {
        return note;
    }
    public void setWhether(String whether) 
    {
        this.whether = whether;
    }

    public String getWhether() 
    {
        return whether;
    }

    public List<Socialsecurity> getSocialsecurityList()
    {
        return socialsecurityList;
    }

    public void setSocialsecurityList(List<Socialsecurity> socialsecurityList)
    {
        this.socialsecurityList = socialsecurityList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("usercode", getUsercode())
            .append("username", getUsername())
            .append("usersex", getUsersex())
            .append("userdep", getUserdep())
            .append("userrole", getUserrole())
            .append("usermobile", getUsermobile())
            .append("useridCard", getUseridCard())
            .append("useremail", getUseremail())
            .append("birthday", getBirthday())
            .append("entertime", getEntertime())
            .append("leavetime", getLeavetime())
            .append("bankname", getBankname())
            .append("bankaccount", getBankaccount())
            .append("degree", getDegree())
            .append("userstate", getUserstate())
            .append("accrualsubject", getAccrualsubject())
            .append("accountSetsId", getAccountSetsId())
            .append("note", getNote())
            .append("whether", getWhether())
            .append("socialsecurityList", getSocialsecurityList())
                .append("id", getId())
                .append("project", getProject())
                .append("baseNum", getBaseNum())
                .append("companyPortion", getCompanyPortion())
                .append("companyPay", getCompanyPay())
                .append("personPortion", getPersonPortion())
                .append("personPay", getPersonPay())
                .append("accountSetsId", getAccountSetsId())
                .toString();
    }
    @Excel(name = "缴纳项目")
    private String project;

    /** 缴存基数
     */
    @Excel(name = "缴存基数 ")
    private String baseNum;

    /** 公司比例 */
    @Excel(name = "公司比例")
    private String companyPortion;

    /** 公司比例-应缴 */
    @Excel(name = "公司比例-应缴")
    private String companyPay;

    /** 个人比例 */
    @Excel(name = "个人比例")
    private String personPortion;

    /** 个人比例-应缴 */
    @Excel(name = "个人比例-应缴")
    private String personPay;

    /** 嵌套 */



    public void setProject(String project)
    {
        this.project = project;
    }

    public String getProject()
    {
        return project;
    }
    public void setBaseNum(String baseNum)
    {
        this.baseNum = baseNum;
    }

    public String getBaseNum()
    {
        return baseNum;
    }
    public void setCompanyPortion(String companyPortion)
    {
        this.companyPortion = companyPortion;
    }

    public String getCompanyPortion()
    {
        return companyPortion;
    }
    public void setCompanyPay(String companyPay)
    {
        this.companyPay = companyPay;
    }

    public String getCompanyPay()
    {
        return companyPay;
    }
    public void setPersonPortion(String personPortion)
    {
        this.personPortion = personPortion;
    }

    public String getPersonPortion()
    {
        return personPortion;
    }
    public void setPersonPay(String personPay)
    {
        this.personPay = personPay;
    }

    public String getPersonPay()
    {
        return personPay;
    }

//    @Override
//    public String toString() {
//        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
//                .append("id", getId())
//                .append("project", getProject())
//                .append("baseNum", getBaseNum())
//                .append("companyPortion", getCompanyPortion())
//                .append("companyPay", getCompanyPay())
//                .append("personPortion", getPersonPortion())
//                .append("personPay", getPersonPay())
//                .append("accountSetsId", getAccountSetsId())
//                .toString();
//    }

}
